package utils;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;

public class StringUtils {
	
	/*===========================================================
	 * 						ATTRIBUTES
	 *===========================================================*/
	
	/*====================
	 * 		COMMON
	 *====================*/
	
	private final static String EMPTY = "";

	/*====================
	 * 		ENCODE
	 *====================*/
	
	/** Default encodage, this value can be changed */
	public static String CHARSET_ENCODE_DEFAULT = "UTF-8";
	public final static String CHARSET_ENCODE_UTF8 = "UTF-8";
	
	
	/*===========================================================
	 * 						METHODS
	 *===========================================================*/
	
	/*====================
	 * 	 String tests
	 *====================*/
	
	/**
	 * @return true if null or empty, else false
	 */
	public static Boolean isEmpty(final String string){
		return string == null || (string != null && string.equals(EMPTY));
	}
	
	public static Boolean isNotEmpty(final String string){
		return !isEmpty(string);
	}
	
	/*====================
	 *   	ENCODE
	 *====================*/
	
	public static String encode(final String string) throws UnsupportedEncodingException{
		return URLEncoder.encode(string, CHARSET_ENCODE_DEFAULT);
	}
	
	public static String encode(final String string, final String charset) throws UnsupportedEncodingException{
		return URLEncoder.encode(string, charset);
	}
	
	public static String decode(final String string) throws UnsupportedEncodingException{
		return new String(string.getBytes(), Charset.forName(CHARSET_ENCODE_DEFAULT));
	}
	
	public static String decode(final String string, final String charset) throws UnsupportedEncodingException{
		return new String(string.getBytes(), Charset.forName(charset));
	}
	
	/*====================
	 *   	ACTION
	 *====================*/
	
	/**
	 * Split the the string param
	 */
	public static List<String> split(final String string, final String spliter) throws UnsupportedEncodingException {
		String[] splitNames = string.split(spliter);
		List<String> listOfNames = new ArrayList<String>();
		for (int i = 0; i < splitNames.length; i++) {
			listOfNames.add(splitNames[i]);
		}
		return listOfNames;
	}
}
